<?php

class System {

	public $db; // TODO - czy tutaj public?

	public function __construct(){
		$this->db = new Db($dbuser, $dbpass, $dbname);
	}

	public function systemInit($dbuser, $dbpass, $dbname) {
		ob_start("ob_gzhandler");
		header('content-type: text/html; charset=UTF-8'); // TODO - header ?
		if (is_callable(date_default_timezone_set('Europe/Warsaw'))) // default time zone
			date_default_timezone_set('Europe/Warsaw');

		$users = new Users();
		$smarty = $this->InitSmarty();
		
		$file = $_SERVER['SCRIPT_FILENAME'];
		$file = basename($file,'.php');

		switch ($file) {
			// SKRYPT GLOWNY - wywoływany na starcie, jeżeli w url jest 'index.php
			// pozostałe case'y - inne pliki np. samouczki.php i cron
			case "index":
				if (isset($_REQUEST['logowanie']) || isset($_POST['zaloguj']))
					$users->ObsluzLogowanie($smarty, $users);
				elseif (isset($_REQUEST['wyloguj']))
					$this->ObsluzWylogowanie($users, $smarty);
				elseif (!$users->CheckIfLogged()) {
					$_REQUEST = array();
					$_REQUEST['przekierowanie'] = $_SERVER['REQUEST_URI'];
					$users->ObsluzLogowanie($smarty, $users);
				}else
					$this->WyswietlTresc($smarty);
				break;
		}

	}

	/**
	 * Inicjalizuje biblioteke Smarty, zwraca obiekt tej klasy.
	 *
	 * @return obj Smarty
	 */
	public function InitSmarty() {
		$smarty = new Smarty;
		$smarty->template_dir = SMARTY_TEMPLATE_DIR;
		$smarty->compile_dir = SMARTY_COMPILE_DIR;

		return $smarty;
	}
	public function WyswietlTresc($smarty) {

		// próba bazy danych
		//$db = new Db(); // TODO - zamykanie połączenia $db = null ?
//		echo $_REQUEST['pokaz'];exit;

		switch ($_REQUEST['pokaz']) {
			case "przyklad":
				echo "asdf";
				exit;
				break;
			case "pulpit":
//				$strony = new Strony();
//				$strony->PokazPulpit($smarty);
				break;
//			default:
//              //$ligi = $db->fetchAll('select *,k.name as kolejka_name from kolejka k left join ligues l on l.id = k.ligue_id');
//				$users = $db->fetchAll('select * from '.DB_PREFIX.'users');
//				$smarty->assign('ligi', $users);
//
//				$smarty->assign('polskie_znaki', 'ęąłźóćśńż');
//				break;
		}

//		$smarty->assign("czas_generowania", $this->PobierzCzasGenerowania(START_TIME));
		
		$smarty->display('tpl/index.tpl');
	}

	/**
	 * Sprawdz, czy przegladarka uzytkownika jest kompatybilna
	 * z systemem, zwraca wynik sprawdzenia.
	 *
	 * @return bool
	 */
	public function BrowserCompatibilityCheck() {
		if (isset($_SERVER['HTTP_USER_AGENT'])) {
			$x = strtolower($_SERVER['HTTP_USER_AGENT']);

			$browser = new Browser($x);

			if (substr_count($x, "opera") != 0)
				return true;
			elseif (substr_count($x, "rv:1.") != 0 || substr_count($x, "firefox") != 0)
				return true;
			elseif (substr_count($x, "safari") != 0)
				return true;
			elseif (substr_count($x, "chrome") != 0)
				return true;
			elseif (strpos($browser->Name, 'msie') !== false && floatval($browser->Version) >= 8)
				return true;
			else
				return false;
		}
		else
			return false;
	}
}

?>